using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Administration;

namespace FAB40.InventoryTracking.Features.Feature3
{
    /// <summary>
    /// This class handles events raised during feature activation, deactivation, installation, uninstallation, and upgrade.
    /// </summary>
    /// <remarks>
    /// The GUID attached to this class may be used during packaging and should not be modified.
    /// </remarks>

    [Guid("58f236cd-c8e5-483f-a9fa-be874977b57f")]
    [SharePointPermission(SecurityAction.LinkDemand, ObjectModel = true)]
    [SharePointPermission(SecurityAction.InheritanceDemand, ObjectModel = true)]
    public class Feature3EventReceiver : SPFeatureReceiver
    {
        // Uncomment the method below to handle the event raised after a feature has been activated.

        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            try
            {
                SPDiagnosticsService diagnosticsService = SPDiagnosticsService.Local;
                SPDiagnosticsCategory cat = diagnosticsService.Areas["SharePoint Foundation"].Categories["FAB40"];

                string format = "FAB40.DocumentLibraryAndReview FeatureActivated {0} in area {1}";
                diagnosticsService.WriteTrace(1, cat, TraceSeverity.Medium, format, cat.Name, cat.Area.Name);

                SPWeb web = (SPWeb)properties.Feature.Parent;// .get_Feature().get_Parent();
                SPList list = web.Lists[SPUtility.GetLocalizedString("$Resources:tsa,transactionsList;", "tsa", web.Language)];
                if (list != null)
                {
                    list.ContentTypesEnabled = true;// set_ContentTypesEnabled(true);
                    list.Update();
                    SPList list2 = web.Lists[SPUtility.GetLocalizedString("$Resources:tsa,suppliersList;", "tsa", web.Language)];
                    if (list2 != null)
                    {
                        SPField field = list2.Fields[new Guid("{038d1503-4629-40f6-adaf-b47d1ab2d4fe}")]; //Company 
                        if (field != null)
                        {
                            field.Required = true; ;// set_Required(true);
                            field.Update();
                            SPField field2 = web.Lists[SPUtility.GetLocalizedString("$Resources:tsa,customersList;", "tsa", web.Language)].Fields[new Guid("{475c2610-c157-4b91-9e2d-6855031b3538}")]; //Full Name
                            if (field2 != null)
                            {
                                field2.Required = true; ;//.set_Required(true);
                                field2.Update();
                            }
                        }
                    }
                }

                format = "FAB40.DocumentLibraryAndReview FeatureActivated - End {0} in area {1}";
                diagnosticsService.WriteTrace(1, cat, TraceSeverity.Medium, format, cat.Name, cat.Area.Name);
            }
            catch (Exception ex)
            {
                SPDiagnosticsService diagnosticsService = SPDiagnosticsService.Local;
                SPDiagnosticsCategory cat = diagnosticsService.Areas["SharePoint Foundation"].Categories["FAB40"];

                string format = "FAB40.DocumentLibraryAndReview FeatureActivated {0} in area {1}. Error {2}";
                diagnosticsService.WriteTrace(1, cat, TraceSeverity.Medium, format, cat.Name, cat.Area.Name, ex.Message);

                throw;
            } 
        }


        // Uncomment the method below to handle the event raised before a feature is deactivated.

        //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        //{
        //}


        // Uncomment the method below to handle the event raised after a feature has been installed.

        //public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        //{
        //}


        // Uncomment the method below to handle the event raised before a feature is uninstalled.

        //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        //{
        //}

        // Uncomment the method below to handle the event raised when a feature is upgrading.

        //public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
        //{
        //}
    }
}
